//package com.example.client;
//
//import cn.hutool.http.HttpResponse;
//import cn.hutool.http.HttpUtil;
//import lombok.extern.slf4j.Slf4j;
//
//import javax.websocket.*;
//import java.io.IOException;
//import java.net.URI;
//import java.text.MessageFormat;
//
//@ClientEndpoint
//@Slf4j
//public class MyWebSocketClient {
//
//    private Session session;
//
//    private final Object LOCK = new Object();
//
//    @OnOpen
//    public void onOpen(Session session) {
//        log.info("开始进行连接，sessionId:{}", session.getId());
//        this.session = session;
//    }
//
//    @OnMessage
//    public void onMessage(String message) {
//        log.info("收到服务端的消息，sessionId:{}，：{}", session.getId(), message);
//        synchronized (LOCK) {
//            LOCK.notify();
//        }
//    }
//
//    @OnClose
//    public void onClose() {
//        log.info("关闭连接，sessionId:{}", session.getId());
//        try {
//            this.session.close();
//        } catch (IOException e) {
//            log.error("关闭连接异常", e);
//        }
//    }
//
//    /**
//     * 发送消息
//     * @param message
//     */
//    public void send(String message) {
//        this.session.getAsyncRemote().sendText(message);
//        synchronized (LOCK) {
//            try {
//                LOCK.wait(10000);
//            } catch (InterruptedException e) {
//                log.error("发送消息，等待异常", e);
//            }
//        }
//    }
//
//    public static void main(String[] args) {
//        String url = "http://127.0.0.1:8081/login?username={0}&password={1}";
//        //模拟登陆
//        HttpResponse response = HttpUtil.createGet(MessageFormat.format(url, "client1", "client1")).execute();
//        String token = response.body();
//
//        HttpResponse response2 = HttpUtil.createGet(MessageFormat.format(url, "client2", "client2")).execute();
//        String token2 = response2.body();
//
//        String token3 = "aaaaaaaaaa";
//
//        //创建客户端
//        WebSocketContainer container = ContainerProvider.getWebSocketContainer();
//        //消息体，限制32 M
//        container.setDefaultMaxTextMessageBufferSize(32000000);
//        container.setDefaultMaxSessionIdleTimeout(90000000L);
//        MyWebSocketClient client = new MyWebSocketClient();
//        MyWebSocketClient client2 = new MyWebSocketClient();
//        MyWebSocketClient client3 = new MyWebSocketClient();
//        final String WS_SERVER_URL = "ws://127.0.0.1:8081/ss";
//        try(Session s = container.connectToServer(client, new URI(WS_SERVER_URL + "?token=" + token));
//            Session s2 = container.connectToServer(client2, new URI(WS_SERVER_URL + "?token=" + token2));
//            // 去掉注释，会走登陆失败流程 @see com.example.server.handle.MyHandshakeInterceptor
////            Session s3 = container.connectToServer(client3, new URI(WS_SERVER_URL + "?token=" + token3))
//        ) {
//
//            for (int i = 0; i < 10; i++) {
//                client.send("你好帅" + i);
//            }
//
//            //sleep 模拟接收服务端发过来的消息
//            Thread.sleep(90000000L);
//        } catch (Exception e) {
//            log.error("连接服务端异常", e);
//        }
//    }
//}
